home *** CD-ROM | disk | FTP | other *** search
/ Delphi 5 for Professionals / DELPHI5.iso / Runimage / Delphi50 / Source / Property Editors / dbedit.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1999-08-11  |  4.5 KB  |  170 lines

  1.  
  2. {*******************************************************}
  3. {                                                       }
  4. {       Borland Delphi Visual Component Library         }
  5. {                                                       }
  6. {       Copyright (c) 1995,99 Inprise Corporation       }
  7. {                                                       }
  8. {*******************************************************}
  9.  
  10. unit DBEdit;
  11.  
  12. {$R-}
  13.  
  14. interface
  15.  
  16. uses SysUtils, Windows, Messages, Classes, Graphics, Controls,
  17.   Forms, Dialogs, Buttons, StdCtrls, Db, DBTables;
  18.  
  19. type
  20.   TDBEditForm = class(TForm)
  21.     GroupBox1: TGroupBox;
  22.     Label4: TLabel;
  23.     DatabaseName: TEdit;
  24.     Label1: TLabel;
  25.     AliasName: TComboBox;
  26.     Label2: TLabel;
  27.     DriverName: TComboBox;
  28.     Label3: TLabel;
  29.     DatabaseParams: TMemo;
  30.     DefaultsButton: TButton;
  31.     ClearButton: TButton;
  32.     GroupBox3: TGroupBox;
  33.     LoginPrompt: TCheckBox;
  34.     KeepConnection: TCheckBox;
  35.     OkButton: TButton;
  36.     CancelButton: TButton;
  37.     HelpButton: TButton;
  38.     procedure AliasNameChange(Sender: TObject);
  39.     procedure AliasNameDropDown(Sender: TObject);
  40.     procedure DriverNameChange(Sender: TObject);
  41.     procedure DriverNameDropDown(Sender: TObject);
  42.     procedure DefaultsButtonClick(Sender: TObject);
  43.     procedure ClearButtonClick(Sender: TObject);
  44.     procedure OkButtonClick(Sender: TObject);
  45.     procedure FormCreate(Sender: TObject);
  46.     procedure HelpButtonClick(Sender: TObject);
  47.   private
  48.     Database: TDatabase;
  49.     function Edit: Boolean;
  50.   end;
  51.  
  52. function EditDatabase(ADatabase: TDatabase): Boolean;
  53.  
  54. implementation
  55.  
  56. {$R *.DFM}
  57.  
  58. uses BdeConst, TypInfo, LibHelp, BDE;
  59.  
  60. function EditDatabase(ADatabase: TDatabase): Boolean;
  61. begin
  62.   with TDBEditForm.Create(Application) do
  63.   try
  64.     Database := ADatabase;
  65.     Result := Edit;
  66.   finally
  67.     Free;
  68.   end;
  69. end;
  70.  
  71. function TDBEditForm.Edit: Boolean;
  72. begin
  73.   Caption := Format(SDBCaption, [Database.Owner.Name, DotSep, Database.Name]);
  74.   DatabaseName.Text := Database.DatabaseName;
  75.   AliasName.Text := Database.AliasName;
  76.   DriverName.Text := Database.DriverName;
  77.   DatabaseParams.Lines := Database.Params;
  78.   LoginPrompt.Checked := Database.LoginPrompt;
  79.   KeepConnection.Checked := Database.KeepConnection;
  80.   Result := False;
  81.   if ShowModal = mrOk then
  82.   begin
  83.     Database.DatabaseName := DatabaseName.Text;
  84.     if DriverName.Text <> '' then
  85.       Database.DriverName := DriverName.Text
  86.     else
  87.       Database.AliasName := AliasName.Text;
  88.     Database.Params := DatabaseParams.Lines;
  89.     Database.LoginPrompt := LoginPrompt.Checked;
  90.     Database.KeepConnection := KeepConnection.Checked;
  91.     Result := True;
  92.   end;
  93. end;
  94.  
  95. procedure TDBEditForm.AliasNameChange(Sender: TObject);
  96. begin
  97.   DriverName.Text := '';
  98. end;
  99.  
  100. procedure TDBEditForm.AliasNameDropDown(Sender: TObject);
  101. begin
  102.   AliasName.Items.Clear;
  103.   Database.Session.GetAliasNames(AliasName.Items);
  104. end;
  105.  
  106. procedure TDBEditForm.DriverNameChange(Sender: TObject);
  107. begin
  108.   AliasName.Text := '';
  109. end;
  110.  
  111. procedure TDBEditForm.DriverNameDropDown(Sender: TObject);
  112. begin
  113.   DriverName.Items.Clear;
  114.   Database.Session.GetDriverNames(DriverName.Items);
  115. end;
  116.  
  117. procedure TDBEditForm.DefaultsButtonClick(Sender: TObject);
  118. var
  119.   AddPassword: Boolean;
  120. begin
  121.   DatabaseParams.Clear;
  122.   AddPassword := False;
  123.   if DriverName.Text <> '' then
  124.   begin
  125.     Database.Session.GetDriverParams(DriverName.Text, DatabaseParams.Lines);
  126.     AddPassword := DriverName.Text <> szCFGDBSTANDARD;
  127.   end else
  128.     if AliasName.Text <> '' then
  129.     begin
  130.       Database.Session.GetAliasParams(AliasName.Text, DatabaseParams.Lines);
  131.       AddPassword := Database.Session.GetAliasDriverName(AliasName.Text) <> szCFGDBSTANDARD;
  132.     end;
  133.   if AddPassword then DatabaseParams.Lines.Add('PASSWORD=');
  134. end;
  135.  
  136. procedure TDBEditForm.ClearButtonClick(Sender: TObject);
  137. begin
  138.   DatabaseParams.Clear;
  139. end;
  140.  
  141. procedure TDBEditForm.OkButtonClick(Sender: TObject);
  142. begin
  143.   ModalResult := mrNone;
  144.   try
  145.     Database.ValidateName(DatabaseName.Text);
  146.   except
  147.     DatabaseName.SetFocus;
  148.     raise;
  149.   end;
  150.   if Database.Connected then
  151.   begin
  152.     if MessageDlg(SDisconnectDatabase, mtConfirmation,
  153.       mbOkCancel, 0) <> mrOk then Exit;
  154.     Database.Close;
  155.   end;
  156.   ModalResult := mrOk;
  157. end;
  158.  
  159. procedure TDBEditForm.FormCreate(Sender: TObject);
  160. begin
  161.   HelpContext := hcDDataBaseEdit;
  162. end;
  163.  
  164. procedure TDBEditForm.HelpButtonClick(Sender: TObject);
  165. begin
  166.   Application.HelpContext(HelpContext);
  167. end;
  168.  
  169. end.
  170.